iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
0

Database

from Toptal - Eight Common Database Design Bad Practices

由於資料庫的討論及教學的材料非常多,本筆記著重記錄「資料庫為何重要」及「怎樣的學習步驟能幫助新手上路」。

本篇筆記將解決以下問題:

  • 為什麼我的應用程式需要資料庫
  • 新手學習資料庫的思考與步驟

誰適合閱讀:

  • 想快速了解「資料與資料庫概念」的人
  • 想初步入門「資料庫選擇與學習」的人

 

為什麼我的應用程式需要資料庫

application and database

from ACS Group - Database Application Services to Power Today's Businesses

舉凡每天與各種生活圈互動的社群/聊天軟體、遇到問題使用的搜尋引擎、各種日常所需的線上購物、肚子餓叫的外賣、短程移動時的共享交通工具或叫車服務等,底層的服務邏輯都環繞資料的處理。

「資料」(data)是所有網路應用程式的核心。我們平常使用的各種應用程式、平臺或網路工具,所提供的共同價值,就是收集、整理與分享資料。
——from Alpha Camp's material

資料的作用是什麼?

Data

from BBVAOpen4U - Four interesting ideas that harness big data

資料協助我們將現實生活中的實體或概念,轉為虛擬、可被定義的資料,例如:

  • Facebook 社群:使用者、貼文、回應等
  • Google 搜尋引擎:網址、索引等
  • Shopee 蝦皮購物:買家、賣家、商品、訂單等

以上分別代表不同的資料,而每一筆資料又以不同的「屬性」及「資料型別」來儲存及處理。

屬性

屬性就是資料的細節,以使用者來說,可能就包含帳號、密碼、姓名、連絡信箱等。

資料型別

不同類型的資料會有不同的型別,例如使用者名稱會是字串(String)、按讚數使用數值(Number)等。

可參考的資料:

書名 作者 語言 頁數
"Web Development with Node & Express" "Ethan Brown" "english" 399

from Alpha Camp's material

資料庫超迅速入門

SQL and NoSQL Database

from The Startup - Explaining SQL and NoSQL, to Grandma

資料庫管理系統 (Database Management System),通常簡稱資料庫或 DBMS,通常提供實用指令與功能,讓開發者可以儲存、取得與管理資料。

依資料結構設計的不同邏輯,又分為「關聯式資料庫 (Relational Database)」 與「非關聯式資料庫(NoSQL) 」。

然而,知道資料庫怎麼用不是最重要,明白何時使用才是關鍵。理解不同資料庫的特性,有助於我們應用在適合的使用情境。透過兩者的實作經驗,能使我們累積足夠的判斷力,以因情況制宜。

 

新手學習資料庫的思考與步驟

Learning Database

from Lynda.com - Database auditing strategies

資料庫分兩種,又各自有超多不同的資料庫系統,在學習時到底從哪裡及如何開始呢?

從正在學習的 課程 中,我歸納出三個重點:

  1. 從資料結構較不嚴謹(schema-less)的 NoSQL 開始
  2. 在實戰中掌握特性
  3. 反思各種情境的資料結構設計

循序漸進並學以致用是關鍵

為什麼是這三點呢?

我認為資料庫系統運用及資料結構的設計是一門博大精深,且對初學者來說是較為抽象的概念,他的複雜程度可以非常高。所以,循序漸進的學習是重要的。NoSQL 相較於 Relational Database 有較為彈性的資料結構與操作,想要設計關聯式資料也同樣可行。

而後面兩點,呼應前提「何時使用才關鍵」,實作與傳授是最有效能掌握事物特性及原理的方式;而反思實際應用情境,則協助我們舉一反三,提取出可不斷段迭代的原則,並擴充我們腦中的經驗資料庫。當碰到不同的情況時,我們能快速判斷該採用何者、如何運用。

新手學習資料庫的推薦步驟

我認為目前的學習步調挺適合的:

  1. NoSQL 的 MongoDB
  2. RDBMS 的 MySQL

原因是這兩個資料庫都提供免費的版本,open source、使用者最多、生態系最完整,也分別為 NoSQL 與 RDBMS 的第一名:

Most Popular Database 2020

from Stack Overflow - Developer Survey Results 2020

學習的第一步與下一步

接下來就是透過大量練習及實戰來累積洞察及經驗了!為了讓我們能更專注在資料庫的應用層面,會建議先以 NoSQL 的 ODM(Object Document Mapper)及 RDBMS 的 ORM(Object Relational Mapping)來入門。

它們通常以程式語言裡的「物件」來包裝資料庫的 SQL (structured query language),讓開發者可以直接使用物件導向的方式操作資料庫,同時也增加程式碼的易讀性與維護性。

接下來要實作的 MongoDB 在 Node.js 中我們會使用 Mongoose 這個 ODM 來初始化並操作資料庫。

 


閱讀更多

Infinite Gamer
關於本系列更多內容及導讀,請閱讀作者於 Medium 個人專欄 【無限賽局玩家 Infinite Gamer | Publication – 】 上的文章 《用 JavaScript 打造全端產品的入門學習筆記》系列指南


上一篇
以演算法實踐商業邏輯——全端實作體驗 V
下一篇
用 Mongoose 迅速架設資料庫伺服器——經典全端實務 I
系列文
用 JavaScript 打造全端產品的入門學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言